Authentication বা পরিচয় যাচাই একটি গুরুত্বপূর্ণ প্রক্রিয়া যা নিশ্চিত করে যে একজন ব্যবহারকারী সঠিকভাবে পরিচিত এবং তার অ্যাপ্লিকেশনে অ্যাক্সেস প্রাপ্ত। বিভিন্ন অ্যাপ্লিকেশন এবং সিস্টেমে ব্যবহারকারী পরিচয়ের যাচাই করার জন্য বিভিন্ন ধরনের authentication strategies ব্যবহৃত হয়। এর মধ্যে সবচেয়ে জনপ্রিয় দুটি কৌশল হলো JWT (JSON Web Tokens) এবং OAuth। এখানে এই দুটি পদ্ধতির বিস্তারিত আলোচনা করা হলো।
১. JWT (JSON Web Tokens)
JWT একটি ওপেন স্ট্যান্ডার্ড (RFC 7519) যা নিরাপদভাবে তথ্য আদান প্রদান করতে ব্যবহৃত হয়। এটি সাধারণত Authentication এবং Authorization (অথবা অনুমোদন) এর জন্য ব্যবহৃত হয়। JWT সাধারণত ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদভাবে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়, এবং এটি স্টেটলেস অথেনটিকেশন পদ্ধতির অংশ হিসেবে ব্যবহৃত হয়।
JWT এর কাঠামো:
JWT তিনটি অংশে বিভক্ত:
Header:
- এটি টোকেনের ধরণ এবং সিগনেচার অ্যালগরিদম নির্ধারণ করে (যেমন: HMAC SHA256 বা RSA)।
উদাহরণ:
{ "alg": "HS256", "typ": "JWT" }Payload:
- এখানে টোকেনের ভিতরের তথ্য বা "claims" থাকে। এটি ব্যবহারকারীর পরিচয় এবং অন্য তথ্য ধারণ করতে পারে।
উদাহরণ:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }sub: ব্যবহারকারীর পরিচয় বা সাবজেক্ট।iat: টোকেনটি তৈরি হওয়ার সময়।
Signature:
- সিগনেচারটি টোকেনটির সুরক্ষা নিশ্চিত করতে ব্যবহৃত হয়। এটি হেডার এবং পে-লোডের একটি সিক্রেট কী বা প্রাইভেট কী দিয়ে সাইন করা হয়।
উদাহরণ:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
JWT Authentication Flow:
- লগইন:
- ব্যবহারকারী সঠিক ক্রেডেনশিয়াল দিয়ে লগইন করলে সার্ভার একটি JWT টোকেন প্রদান করে।
- টোকেনের ব্যবহার:
- ক্লায়েন্ট প্রতিটি রিকোয়েস্টের সাথে JWT টোকেন পাঠায়, যা সার্ভার যাচাই করে।
- সার্ভার ভ্যালিডেশন:
- সার্ভার টোকেনের সিগনেচার যাচাই করে, এবং যদি এটি সঠিক হয়, তবে এটি ক্লায়েন্টকে অ্যাক্সেস প্রদান করে।
JWT এর সুবিধা:
- স্টেটলেস: সার্ভারের কোনো স্টেট বা সেশন ট্র্যাকিংয়ের প্রয়োজন নেই।
- সিকিউরিটি: JWT একটি সিগনেচার দ্বারা সুরক্ষিত থাকে, যা টোকেনটির অখণ্ডতা নিশ্চিত করে।
- ক্রস-প্ল্যাটফর্ম সমর্থন: এটি ওয়েব, মোবাইল অ্যাপ, এবং অন্যান্য সার্ভিসের মধ্যে ব্যবহৃত হতে পারে।
২. OAuth (Open Authorization)
OAuth একটি ওপেন স্ট্যান্ডার্ড অথেনটিকেশন এবং অথরাইজেশন প্রটোকল যা ব্যবহারকারীদের এক অ্যাপ্লিকেশন থেকে অন্য অ্যাপ্লিকেশনে সুরক্ষিতভাবে অ্যাক্সেস প্রদান করতে সাহায্য করে। OAuth সাধারণত Third-party authentication এর জন্য ব্যবহৃত হয়, যেখানে একটি অ্যাপ্লিকেশন ব্যবহারকারীকে অন্য একটি সিস্টেমে লগইন করতে দেয় (যেমন, Google, Facebook, Twitter)।
OAuth 2.0 ফ্লো:
OAuth 2.0 একটি Authorization Framework যা ব্যবহারকারীকে একটি অ্যাপ্লিকেশনকে তার অ্যাকাউন্টে সীমিত অ্যাক্সেস প্রদান করতে অনুমতি দেয়।
OAuth 2.0 মূলত ৪টি গুরুত্বপূর্ণ ভূমিকা দিয়ে কাজ করে:
- Resource Owner (ব্যবহারকারী): যিনি সিস্টেমের সাথে সংযুক্ত অ্যাকাউন্টের মালিক।
- Client (অ্যাপ্লিকেশন): যেটি রিসোর্স অ্যাক্সেস করতে চায়।
- Authorization Server: এটি টোকেন জেনারেট করে।
- Resource Server: যেখানে প্রকৃত ডেটা সংরক্ষিত থাকে (যেমন, Facebook বা Google API সার্ভিসে ডেটা)।
OAuth 2.0 Flow:
- Authorization Request:
- ক্লায়েন্ট অ্যাপ্লিকেশন ব্যবহারকারীকে Authorization Server এ পাঠায় একটি অনুমোদন রিকোয়েস্টের জন্য (যেমন, Google, Facebook)।
- User Grants Permission:
- ব্যবহারকারী যদি অনুমতি দেয়, তাহলে Authorization Server একটি Authorization Code প্রদান করে।
- Token Request:
- ক্লায়েন্ট অ্যাপ্লিকেশন এই Authorization Code সার্ভারে পাঠায় এবং এর পরিবর্তে একটি Access Token এবং প্রয়োজনে Refresh Token পায়।
- Access Token ব্যবহার:
- ক্লায়েন্ট অ্যাপ্লিকেশন এই Access Token ব্যবহার করে Resource Server থেকে ডেটা অ্যাক্সেস করতে পারে।
OAuth 2.0 এর প্রকারভেদ:
- Authorization Code Grant:
- এটি সবচেয়ে নিরাপদ এবং সর্বাধিক ব্যবহৃত পদ্ধতি। এটি সাধারণত ওয়েব অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয়।
- Implicit Grant:
- সাধারণত পাবলিক ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়, যেখানে টোকেনটি সরাসরি ব্যবহারকারীকে প্রদান করা হয়।
- Resource Owner Password Credentials Grant:
- এটি তখন ব্যবহৃত হয় যখন ক্লায়েন্ট এবং রিসোর্স মালিক (ব্যবহারকারী) একে অপরকে বিশ্বাস করে, যেমন একটি মোবাইল অ্যাপ্লিকেশন।
- Client Credentials Grant:
- এটি সার্ভিস-টু-সার্ভিস অথেনটিকেশনের জন্য ব্যবহৃত হয়, যেখানে ক্লায়েন্ট সার্ভিস নিজেই অ্যাক্সেস টোকেন প্রাপ্ত করে।
JWT এবং OAuth এর মধ্যে পার্থক্য:
| Feature | JWT | OAuth |
|---|---|---|
| Purpose | Authentication এবং Authorization | Authorization (অথরাইজেশন) |
| Token Type | Self-contained টোকেন | Access token (স্টোরেজে থাকে না) |
| Stateful/Stateless | Stateless (স্টেটলেস) | Stateless (OAuth Server State থাকতে পারে) |
| Usage | API Authentication, Single Sign-On (SSO) | Third-party Authorization (Social Login) |
| Security | সিগনেচার দ্বারা সুরক্ষিত | Secure token exchange |
সারাংশ
- JWT (JSON Web Tokens) হলো একটি স্টেটলেস অথেনটিকেশন প্রক্রিয়া যা নিরাপদভাবে তথ্য আদান প্রদান করতে ব্যবহৃত হয় এবং API Authentication-এর জন্য বেশ জনপ্রিয়।
- OAuth হলো একটি অথরাইজেশন প্রটোকল যা তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে ব্যবহারকারী ডেটায় সীমিত অ্যাক্সেস প্রদান করতে সাহায্য করে। এটি সাধারণত Third-Party Authentication যেমন Google Login বা Facebook Login এর জন্য ব্যবহৃত হয়।
উভয় কৌশলই তাদের নিজস্ব সুবিধা এবং ব্যবহার ক্ষেত্র রয়েছে, তবে প্রকৃত অ্যাপ্লিকেশন নির্ভর করবে কোন প্রক্রিয়া প্রয়োজন তার উপর।
Read more